﻿using System;
using System.Threading;

namespace Demo
{
    class Program
    {
        public static bool _a = false;
        static void Main(string[] args)
        {
            /**
             * debug 模式下运行完全没问题的，但是换乘release 就变成了死循环
             * 因为编译器编译work方法发现_a 要么为true要么为false，在方法里面 _a 的值 永远不会发生变换，没有赋值语句
             * 所以就会一直死循环，主要是 循环里面不会去判断_a的值
             * **/
            var t = new Thread(Work);
            t.Start();
            Thread.Sleep(3000);
            _a = true;

            Console.WriteLine("stop");
            t.Join();

            Console.WriteLine("Hello World!");
        }
        public static void Work(object o)
        {
            int a = 0;
            while (!_a)
            {
                a++;
            }
            Console.WriteLine("--->" + a);
        }
    }
}
